package com.sync.syncmasterdata.customer.service.convert;

import com.sync.syncmasterdata.customer.pojo.OACustomer;
import com.sync.syncmasterdata.customer.pojo.U8Customer;
import com.sync.syncmasterdata.customer.service.impl.CPServiceImpl;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

import static com.sync.syncmasterdata.util.NormalUtil.getMapValue;
import static com.sync.syncmasterdata.util.NormalUtil.getNowData;

/**
 * OA 对象 转 u8对象
 */
@Service
public class OAToU8 {
    @Autowired
    private CPServiceImpl cpService;

    public U8Customer convertFun(OACustomer oa, String prod) {
        //获取字典 关于oa
        Map<String, JSONObject> priMap = cpService.getAreaMap(new JSONArray()).get("oa");

        //客户类别
        String sort_code = getMapValue(priMap, String.valueOf(oa.getSuozaics())) == null ? "" : getMapValue(priMap, String.valueOf(oa.getSuozaics())).get("u8id").toString();
        //省
        String sheng = shengChange(oa.getSuozaisf());
        //市
        String shi = getMapValue(priMap, String.valueOf(oa.getSuozaics())) == null ? "" : getMapValue(priMap, String.valueOf(oa.getSuozaics())).get("new_area").toString();

        U8Customer u8Customer = new U8Customer();
        u8Customer.setCode(prod.equals("edit")?oa.getU8kehubm():null);
        u8Customer.setName(oa.getKehumc());
        u8Customer.setAbbrname(oa.getKehumc());
        //u8所属地区 crm 省份互转 转换 和分类公用一个变量
        u8Customer.setDomain_code(sort_code);
        //u8所属分类 crm货币城市互转 转换
        u8Customer.setSort_code(sort_code);
        //货币 转换
        u8Customer.setCcusexch_name(prod.equals("edit") ?null:"人民币");
        //客户管理类型 转换
        u8Customer.setCcusmngtypecode(cusType2U8type(oa.getKehulb()));
        //国内 固定
        u8Customer.setBcusdomestic(prod.equals("edit") ? null : 1);
        //服务 固定
        u8Customer.setBserviceattribute(prod.equals("edit") ? null:0);
        //国外 固定
        u8Customer.setBcusoverseas(prod.equals("edit") ?null:0);
        //零售 固定
        u8Customer.setBshop(prod.equals("edit") ?null:0);
        //是否有资质 转换
        u8Customer.setSelf_define2(cusZZ2U8ZZ(oa.getShifouyzz()));
        //省份 自定义字段 中文 转换
        u8Customer.setSelf_define3(sheng);
        //城市 自定义字段 中文 转换
        u8Customer.setSelf_define6(shi);

        //停用时间 转换
        u8Customer.setEnd_date(cusStop2U8Stop(oa.getKehuzt()));
        return u8Customer;

    }

    /**
     * oa 客户管理转U8
     *
     * @param _in
     * @return
     */
    private String cusType2U8type(Integer _in) {
        if (Objects.isNull(_in)) {
            return "999";
        }
        switch (_in) {
            case 9:
                return "04";
            case 4:
                return "999";
            case 2:
                return "12";
            case 3:
                return "11";
            case 7:
                return "07";
            case 8:
                return "14";
            default:
                return "999";
        }
    }

    /**
     * oa u8 停用时间转换
     *
     * @param _in
     * @return
     */
    private String cusStop2U8Stop(Integer _in) {
        if (Objects.isNull(_in)) {
            return null;
        }
        if (_in == 0) {
            return null;
        } else if (_in == 1) {
            return getNowData();
        } else {
            return null;
        }
    }


    /**
     * crm 转 oa 省份字段 转换
     */
    private String shengChange(int _i) {
        Map<String, Integer> shengMap = new HashMap<>();
        shengMap.put("浙江省", 0);
        shengMap.put("湖南省", 1);
        shengMap.put("山东省", 2);
        shengMap.put("福建省", 3);
        shengMap.put("江苏省", 4);
        shengMap.put("安徽省", 5);
        shengMap.put("湖北省", 6);
        shengMap.put("山西省", 7);
        shengMap.put("北京市", 8);
        shengMap.put("贵州省", 9);
        shengMap.put("重庆市", 10);
        shengMap.put("四川省", 11);
        shengMap.put("上海市", 12);
        shengMap.put("海南省", 13);
        shengMap.put("陕西省", 14);
        shengMap.put("云南省", 15);
        shengMap.put("天津市", 16);
        shengMap.put("河北省", 17);
        shengMap.put("河南省", 18);
        shengMap.put("辽宁省", 19);
        shengMap.put("吉林省", 20);
        shengMap.put("黑龙江", 21);
        shengMap.put("青海省", 22);
        shengMap.put("甘肃省", 23);
        shengMap.put("广西壮族自治区", 24);
        shengMap.put("广东省", 25);
        shengMap.put("江西省", 26);
        shengMap.put("江西省宁夏回族自治区", 27);
        shengMap.put("台湾省", 28);
        shengMap.put("新疆维吾尔自治区", 29);
        shengMap.put("内蒙古自治区", 30);
        for (Map.Entry<String, Integer> entry : shengMap.entrySet()) {
            if (entry.getValue() == _i) {
                return entry.getKey();
            }
        }
        return "";

    }

    /**
     * oa u8 资质转换
     *
     * @param _in
     * @return
     */
    private String cusZZ2U8ZZ(int _in) {
        if (Objects.isNull(_in)) {
            return "否";
        }
        switch (_in) {
            case 0:
                return "是";
            case 1:
                return "否";
            default:
                return "否";
        }
    }
}
